package com.blog.cmrpersonalblog.dto.role.requset;

import com.blog.cmrpersonalblog.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 角色查询请求DTO
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RoleQueryRequest extends BasePageRequest {

    /**
     * 角色标识（模糊查询）
     */
    private String roleKey;

    /**
     * 角色名称（模糊查询）
     */
    private String roleName;

    /**
     * 角色状态（0正常 1停用）
     */
    private String status;

    /**
     * 权限ID（精确查询）
     */
    private Long permissionId;

    /**
     * 构造函数，设置默认排序
     */
    public RoleQueryRequest() {
        super();
        setDefaultSort("id", "asc");
    }

    /**
     * 验证排序字段是否有效
     */
    public boolean isValidSortField() {
        String field = getSortField();
        if (field == null) {
            return false;
        }
        return field.equals("id") ||
               field.equals("role_key") ||
               field.equals("role_name") ||
               field.equals("status") ||
               field.equals("create_time") ||
               field.equals("update_time");
    }

    /**
     * 获取安全的排序字段
     */
    public String getSafeSortField() {
        return isValidSortField() ? getSortField() : "id";
    }
}
